﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// Class för att hantera olika meddelanden till användaren
public class AlertMessage
{
    public class MessageData
    {
        public string Message { get; set; }
        public AlertMessageColors alertMessageColor { get; set; }
    }
    
    public enum AlertMessageColors
    {
        none,
        danger,
        success,
        warning
    }

    // Returnerar en AlertMessage
    public static MessageData OutputAlertMessage(string message)
    {
        MessageData alertMessageData = new MessageData();

        // Sätter olika värden beroende på vilket meddelande som är satt
        string mType = message;

        switch (mType)
        {
            case "error":
                alertMessageData.alertMessageColor = AlertMessageColors.danger;
                alertMessageData.Message = "Ett fel uppstod. Försök igen";
                break;

            case "bookingTime":
                alertMessageData.alertMessageColor = AlertMessageColors.danger;
                alertMessageData.Message = "Det finns redan en bokning som överlappar din bokningstid";
                break;
            case "bookingAdded":
                alertMessageData.alertMessageColor = AlertMessageColors.success;
                alertMessageData.Message = "Din bokning lades till!";
                break;
            case "bookingDeleted":
                alertMessageData.alertMessageColor = AlertMessageColors.warning;
                alertMessageData.Message = "Bokningen togs bort utan problem";
                break;
            case "bookingUpdated":
                alertMessageData.alertMessageColor = AlertMessageColors.success;
                alertMessageData.Message = "Bokningen har uppdaterats!";
                break;
            case "wrongPin":
                alertMessageData.alertMessageColor = AlertMessageColors.danger;
                alertMessageData.Message = "Fel PIN-kod. Vänligen försök igen";
                break;
            case "endsBeforeStart":
                alertMessageData.alertMessageColor = AlertMessageColors.danger;
                alertMessageData.Message = "Bokningens sluttid kan ej vara före starttiden";
                break;
            
            case "userAdded":
                alertMessageData.alertMessageColor = AlertMessageColors.success;
                alertMessageData.Message = "Du har lagts till i konferenssystemet!";
                break;
            case "userExists":
                alertMessageData.alertMessageColor = AlertMessageColors.warning;
                alertMessageData.Message = "En användare med samma namn/e-post finns redan i systemet";
                break;
            case "nullFields":
                alertMessageData.alertMessageColor = AlertMessageColors.danger;
                alertMessageData.Message = "Vänligen fyll i alla fält";
                break;
            case "fixFields":
                alertMessageData.alertMessageColor = AlertMessageColors.warning;
                alertMessageData.Message = "E-postadresserna matchade ej varandra. Försök igen";
                break;
            case "fixEmail":
                alertMessageData.alertMessageColor = AlertMessageColors.warning;
                alertMessageData.Message = "E-postadressen du angav verkar inte vara rätt formaterad. Försök igen";
                break;     

            default:
                mType = "";
                break;
        }
        if (string.IsNullOrEmpty(mType))
        {
            alertMessageData.alertMessageColor = AlertMessageColors.none;
        }

        return alertMessageData;
    }
}